
//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"

bool valid(int a,int b,int c){
    return a+b>c&&a+c>b&&b+c>a&&a!=b&&a!=c&&b!=c&&a>b&&a>c;
}
int main() {
    int a;
//    int
//    is_huiwen(1441,10);
    while (std::cin >> a) {
        int start_len=a/2;

        int cnt=0;
        while(start_len>0){
            int short_len=1;
            int long_len=a-start_len-short_len;
            while(short_len<long_len){
                if(valid(start_len,short_len,long_len)){
                    cnt++;
//                    printf("%d %d %d\n",start_len,short_len,long_len);
                }
                short_len++;
                long_len--;
            }

            start_len--;
        }
        printf("%d\n",cnt);
    }
//    while(1){}
    return 0;
}

